#include <math.h>
#include <iostream>
using std::cout;
using std::endl;
//友元之成员函数的形式
//如果有多个类的情况下，谁声明为谁的友元呢？
//如果Line需要访问Point的私有数据成员
//那么就将Line的成员函数声明为Point的友元
//此时依然不可以，提示Line是不完整的类型
//对于前向声明，尽可以去标识出当前类型，可以使用指针等
//但是如果希望使用类的成员函数，成员等，不可以
class Line;
class Point{
public:
    Point(int x, int y)
    :_x(x)
    ,_y(y)
    {

    }
    friend float Line::distance(const Point & lhs, const Point & rhs);

private:
    int _x;
    int _y;
};

class Line{
public:
    float distance(const Point & lhs,const Point & rhs){
        //让Point提供公有的get函数i
        //sqrt(a *a + b * b)
        int x = lhs._x - rhs._x;
        int y = lhs._y - rhs._y;
        return sqrt(pow(x , 2) + pow(y, 2));
    }
};


void test(){
    //float result = distance(Point(1, 1), Point(4, 5));
    //cout << result << endl;
}

int main()
{
    test();
    return 0;
}

